// app.js
const api = require('./utils/api.js')
const auth = require('./utils/auth.js')

App({
  globalData: {
    userInfo: null,
    token: null,
    isAdmin: false,
    apiUrl: 'https://naturedao.tech/api/v1' // Odoo后端API地址
  },

  onLaunch() {
    console.log('App Launch')
    // 检查登录状态
    this.checkLoginStatus()
    // 检查更新
    this.checkUpdate()
  },

  onShow() {
    console.log('App Show')
  },

  onHide() {
    console.log('App Hide')
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token')
    const userInfo = wx.getStorageSync('userInfo')
    
    if (token && userInfo) {
      this.globalData.token = token
      this.globalData.userInfo = userInfo
      this.globalData.isAdmin = userInfo.is_admin || false
      
      // 验证token是否有效
      this.validateToken()
    }
  },

  // 验证token
  async validateToken() {
    try {
      const res = await api.post('/user/validate', {})
      if (res.code !== 200) {
        this.logout()
      }
    } catch (error) {
      console.error('Token验证失败:', error)
      this.logout()
    }
  },

  // 登录
  async login(code, userInfo) {
    try {
      console.log('🚀 开始登录...')
      console.log('📝 Code:', code)
      console.log('👤 传递的用户信息:', userInfo)
      console.log('🏷️ 昵称(nickName):', userInfo?.nickName)
      console.log('🖼️ 头像(avatarUrl):', userInfo?.avatarUrl)
      
      const res = await api.post('/auth/login', {
        code: code,
        user_info: userInfo  // 注意：改为user_info（下划线）
      })
      
      console.log('✅ 登录响应:', res)
      console.log('📦 返回的userInfo:', res.data?.userInfo)
      
      // 检查是否有JSONRPC错误
      if (res.error) {
        console.error('登录错误:', res.error)
        wx.showToast({
          title: res.error.data?.message || '登录失败',
          icon: 'none'
        })
        return false
      }
      
      if (res.code === 200 || res.result) {
        const data = res.data || res.result
        
        console.log('📦 登录数据:', data)
        console.log('🔑 Token:', data.token ? `${data.token.substring(0, 30)}...` : '无')
        
        this.globalData.token = data.token
        this.globalData.userInfo = data.userInfo
        this.globalData.isAdmin = data.userInfo.is_admin || data.userInfo.role === 'admin'
        
        // 保存到本地
        wx.setStorageSync('token', data.token)
        wx.setStorageSync('userInfo', data.userInfo)
        
        console.log('✅ Token已保存到本地存储')
        console.log('✅ 登录成功，用户:', data.userInfo)
        return true
      }
      
      console.error('登录失败，响应格式异常:', res)
      return false
    } catch (error) {
      console.error('登录异常:', error)
      wx.showToast({
        title: '登录失败：' + (error.message || '网络错误'),
        icon: 'none'
      })
      return false
    }
  },

  // 退出登录
  logout() {
    this.globalData.token = null
    this.globalData.userInfo = null
    this.globalData.isAdmin = false
    
    wx.removeStorageSync('token')
    wx.removeStorageSync('userInfo')
    
    wx.reLaunch({
      url: '/pages/index/index'
    })
  },

  // 检查是否需要更新
  checkUpdate() {
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      
      updateManager.onCheckForUpdate((res) => {
        if (res.hasUpdate) {
          updateManager.onUpdateReady(() => {
            wx.showModal({
              title: '更新提示',
              content: '新版本已准备好，是否重启应用？',
              success: (res) => {
                if (res.confirm) {
                  updateManager.applyUpdate()
                }
              }
            })
          })
          
          updateManager.onUpdateFailed(() => {
            wx.showModal({
              title: '更新失败',
              content: '新版本下载失败，请删除小程序后重新搜索打开',
              showCancel: false
            })
          })
        }
      })
    }
  }
})

